Julia 提升
阐述
promote
函数取任意数量的实参,返回一个相同大小的元组,将各个实参转换到一个相同的类型。
常见的基本数学类型都有相应的提升定义以使其符合直觉。
对语言的提升功能的扩展是通过给 promote_rule
函数提供更多方法实现的,它们接受两个类型并返回提升后的类型。这个函数会被 promote_type
调用(补充上对称性),然后再被 promote
调用。
实例
四则运算的兜底方法可以使用 promote
:
+(x::Number, y::Number) = +(promote(x,y)...)
-(x::Number, y::Number) = -(promote(x,y)...)
*(x::Number, y::Number) = *(promote(x,y)...)
/(x::Number, y::Number) = /(promote(x,y)...)
构造函数中使用 promote
:
Rational(n::Integer, d::Integer) = Rational(promote(n,d)...)